#ifndef COURSELIB_H
#define COURSELIB_H

#include <iostream>
#include <fstream>
#include <sstream>
#include <set>
#include <list>
#include <limits>
#include <iomanip>
#include "course.h"

class CourseLib {
private:
    std::list<Course> courses;

public:
    CourseLib() = default;
    ~CourseLib() = default;

    // Add a course
    void addCourse();

    // save Courses To File
    void saveCoursesToFile() const;
    
    // load Courses From File
	void loadCoursesFromFile(); 

    // display All Courses
    void displayAllCourses() const;

    // filter Courses and display
    void filterCourses() const;

    // delete Course
    void deleteCourse();

    // modify Nature
    void modifyNature();
    
    //init CourseLib
    void initCourseLib(); 

    // get CoursesList
    std::list<Course> getCoursesList() const { return courses; }
    
    friend class Student;
};

#endif

